{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup\n",
    "In this notebook, we will generate some synthetic data to demonstrate how sensitivity analysis work by different methods.\n",
    "\n",
    "# Sensitivity Analysis\n",
    "## Methods\n",
    "We provided five methods for sensitivity analysis including (Placebb Treatment, Random Cause, Subset Data, Random Replace and Selection Bias). \n",
    "This notebook will walkthrough how to use the combined function sensitivity_analysis() to compare different method and also how to use each individual method separately:\n",
    "\n",
    "1. Placebo Treatment: Replacing treatment with a random variable\n",
    "2. Irrelevant Additional Confounder: Adding a random common cause variable\n",
    "3. Subset validation: Removing a random subset of the data\n",
    "4. Selection Bias method with One Sided confounding function and Alignment confounding function\n",
    "5. Random Replace: Random replace a covariate with an irrelevant variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-06-25T22:15:40.625430Z",
     "start_time": "2019-06-25T22:15:39.089085Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/jing.pan/anaconda3/envs/causalml_3_6/lib/python3.6/site-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.utils.testing module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.utils. Anything that cannot be imported from sklearn.utils is now part of the private API.\n",
      "  warnings.warn(message, FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression\n",
    "import warnings\n",
    "import matplotlib\n",
    "from causalml.inference.meta import BaseXLearner\n",
    "from causalml.dataset import synthetic_data\n",
    "\n",
    "from causalml.metrics.sensitivity import Sensitivity\n",
    "from causalml.metrics.sensitivity import SensitivityRandomReplace, SensitivitySelectionBias\n",
    "\n",
    "plt.style.use('fivethirtyeight')\n",
    "matplotlib.rcParams['figure.figsize'] = [8, 8]\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "# logging.basicConfig(level=logging.INFO)\n",
    "\n",
    "pd.options.display.float_format = '{:.4f}'.format"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true
   },
   "source": [
    "# Data Pred"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate Synthetic data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Generate synthetic data using mode 1\n",
    "num_features = 6 \n",
    "y, X, treatment, tau, b, e = synthetic_data(mode=1, n=100000, p=num_features, sigma=1.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5001096146567363"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tau.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define Features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Generate features names\n",
    "INFERENCE_FEATURES = ['feature_' + str(i) for i in range(num_features)]\n",
    "TREATMENT_COL = 'target'\n",
    "OUTCOME_COL = 'outcome'\n",
    "SCORE_COL = 'pihat'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(X, columns=INFERENCE_FEATURES)\n",
    "df[TREATMENT_COL] = treatment\n",
    "df[OUTCOME_COL] = y\n",
    "df[SCORE_COL] = e"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature_0</th>\n",
       "      <th>feature_1</th>\n",
       "      <th>feature_2</th>\n",
       "      <th>feature_3</th>\n",
       "      <th>feature_4</th>\n",
       "      <th>feature_5</th>\n",
       "      <th>target</th>\n",
       "      <th>outcome</th>\n",
       "      <th>pihat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9536</td>\n",
       "      <td>0.2911</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.8720</td>\n",
       "      <td>0.5190</td>\n",
       "      <td>0.0822</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0220</td>\n",
       "      <td>0.7657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.2390</td>\n",
       "      <td>0.3096</td>\n",
       "      <td>0.5115</td>\n",
       "      <td>0.2048</td>\n",
       "      <td>0.8914</td>\n",
       "      <td>0.5015</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0732</td>\n",
       "      <td>0.2304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.1091</td>\n",
       "      <td>0.0765</td>\n",
       "      <td>0.7428</td>\n",
       "      <td>0.6951</td>\n",
       "      <td>0.4580</td>\n",
       "      <td>0.7800</td>\n",
       "      <td>0</td>\n",
       "      <td>-1.4947</td>\n",
       "      <td>0.1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.2055</td>\n",
       "      <td>0.3967</td>\n",
       "      <td>0.6278</td>\n",
       "      <td>0.2086</td>\n",
       "      <td>0.3865</td>\n",
       "      <td>0.8860</td>\n",
       "      <td>0</td>\n",
       "      <td>0.6458</td>\n",
       "      <td>0.2533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.4501</td>\n",
       "      <td>0.0578</td>\n",
       "      <td>0.3972</td>\n",
       "      <td>0.4100</td>\n",
       "      <td>0.5760</td>\n",
       "      <td>0.4764</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0018</td>\n",
       "      <td>0.1000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   feature_0  feature_1  feature_2  feature_3  feature_4  feature_5  target  \\\n",
       "0     0.9536     0.2911     0.0432     0.8720     0.5190     0.0822       1   \n",
       "1     0.2390     0.3096     0.5115     0.2048     0.8914     0.5015       0   \n",
       "2     0.1091     0.0765     0.7428     0.6951     0.4580     0.7800       0   \n",
       "3     0.2055     0.3967     0.6278     0.2086     0.3865     0.8860       0   \n",
       "4     0.4501     0.0578     0.3972     0.4100     0.5760     0.4764       0   \n",
       "\n",
       "   outcome  pihat  \n",
       "0   2.0220 0.7657  \n",
       "1  -0.0732 0.2304  \n",
       "2  -1.4947 0.1000  \n",
       "3   0.6458 0.2533  \n",
       "4  -0.0018 0.1000  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sensitivity Analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## With all Covariates"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sensitivity Analysis Summary Report (with One-sided confounding function and default alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Calling the Base XLearner class and return the sensitivity analysis summary report\n",
    "learner_x = BaseXLearner(LinearRegression())\n",
    "sens_x = Sensitivity(df=df, inference_features=INFERENCE_FEATURES, p_col='pihat',\n",
    "                     treatment_col=TREATMENT_COL, outcome_col=OUTCOME_COL, learner=learner_x)\n",
    "# Here for Selection Bias method will use default one-sided confounding function and alpha (quantile range of outcome values) input\n",
    "sens_sumary_x = sens_x.sensitivity_analysis(methods=['Placebo Treatment',\n",
    "                                                     'Random Cause',\n",
    "                                                     'Subset Data',\n",
    "                                                     'Random Replace',\n",
    "                                                     'Selection Bias'], sample_size=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Placebo Treatment</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>-0.0025</td>\n",
       "      <td>-0.0158</td>\n",
       "      <td>0.0107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Cause</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6673</td>\n",
       "      <td>0.6929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Subset Data(sample size @0.5)</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6874</td>\n",
       "      <td>0.6693</td>\n",
       "      <td>0.7055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6799</td>\n",
       "      <td>0.6670</td>\n",
       "      <td>0.6929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.80111, with r-sqaure:...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>1.3473</td>\n",
       "      <td>1.3347</td>\n",
       "      <td>1.3599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.64088, with r-sqaure:...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>1.2139</td>\n",
       "      <td>1.2013</td>\n",
       "      <td>1.2265</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.48066, with r-sqaure:...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>1.0804</td>\n",
       "      <td>1.0678</td>\n",
       "      <td>1.0931</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.32044, with r-sqaure:...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.9470</td>\n",
       "      <td>0.9343</td>\n",
       "      <td>0.9597</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.16022, with r-sqaure:...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.8135</td>\n",
       "      <td>0.8008</td>\n",
       "      <td>0.8263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.0, with r-sqaure:0.0</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6673</td>\n",
       "      <td>0.6929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.16022, with r-sqaure:0...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.5467</td>\n",
       "      <td>0.5338</td>\n",
       "      <td>0.5595</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.32044, with r-sqaure:0...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.4132</td>\n",
       "      <td>0.4003</td>\n",
       "      <td>0.4261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.48066, with r-sqaure:0...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.2798</td>\n",
       "      <td>0.2668</td>\n",
       "      <td>0.2928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.64088, with r-sqaure:0...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.1463</td>\n",
       "      <td>0.1332</td>\n",
       "      <td>0.1594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.80111, with r-sqaure:0...</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.0129</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.0261</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Method    ATE New ATE  \\\n",
       "0                                  Placebo Treatment 0.6801 -0.0025   \n",
       "0                                       Random Cause 0.6801  0.6801   \n",
       "0                      Subset Data(sample size @0.5) 0.6801  0.6874   \n",
       "0                                     Random Replace 0.6801  0.6799   \n",
       "0  Selection Bias (alpha@-0.80111, with r-sqaure:... 0.6801  1.3473   \n",
       "0  Selection Bias (alpha@-0.64088, with r-sqaure:... 0.6801  1.2139   \n",
       "0  Selection Bias (alpha@-0.48066, with r-sqaure:... 0.6801  1.0804   \n",
       "0  Selection Bias (alpha@-0.32044, with r-sqaure:... 0.6801  0.9470   \n",
       "0  Selection Bias (alpha@-0.16022, with r-sqaure:... 0.6801  0.8135   \n",
       "0       Selection Bias (alpha@0.0, with r-sqaure:0.0 0.6801  0.6801   \n",
       "0  Selection Bias (alpha@0.16022, with r-sqaure:0... 0.6801  0.5467   \n",
       "0  Selection Bias (alpha@0.32044, with r-sqaure:0... 0.6801  0.4132   \n",
       "0  Selection Bias (alpha@0.48066, with r-sqaure:0... 0.6801  0.2798   \n",
       "0  Selection Bias (alpha@0.64088, with r-sqaure:0... 0.6801  0.1463   \n",
       "0  Selection Bias (alpha@0.80111, with r-sqaure:0... 0.6801  0.0129   \n",
       "\n",
       "  New ATE LB New ATE UB  \n",
       "0    -0.0158     0.0107  \n",
       "0     0.6673     0.6929  \n",
       "0     0.6693     0.7055  \n",
       "0     0.6670     0.6929  \n",
       "0     1.3347     1.3599  \n",
       "0     1.2013     1.2265  \n",
       "0     1.0678     1.0931  \n",
       "0     0.9343     0.9597  \n",
       "0     0.8008     0.8263  \n",
       "0     0.6673     0.6929  \n",
       "0     0.5338     0.5595  \n",
       "0     0.4003     0.4261  \n",
       "0     0.2668     0.2928  \n",
       "0     0.1332     0.1594  \n",
       "0    -0.0003     0.0261  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# From the following results, refutation methods show our model is pretty robust; \n",
    "# When alpah > 0, the treated group always has higher mean potential outcomes than the control; when  < 0, the control group is better off.\n",
    "sens_sumary_x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Replace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.7943</td>\n",
       "      <td>0.8200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Method    ATE New ATE New ATE LB New ATE UB\n",
       "0  Random Replace 0.6801  0.8072     0.7943     0.8200"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Replace feature_0 with an irrelevent variable\n",
    "sens_x_replace = SensitivityRandomReplace(df=df, inference_features=INFERENCE_FEATURES, p_col='pihat',\n",
    "                                          treatment_col=TREATMENT_COL, outcome_col=OUTCOME_COL, learner=learner_x,\n",
    "                                          sample_size=0.9, replaced_feature='feature_0')\n",
    "s_check_replace = sens_x_replace.summary(method='Random Replace')\n",
    "s_check_replace"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Selection Bias: Alignment confounding Function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "sens_x_bias_alignment = SensitivitySelectionBias(df, INFERENCE_FEATURES, p_col='pihat', treatment_col=TREATMENT_COL,\n",
    "                                                 outcome_col=OUTCOME_COL, learner=learner_x, confound='alignment',\n",
    "                                                 alpha_range=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "lls_x_bias_alignment, partial_rsqs_x_bias_alignment = sens_x_bias_alignment.causalsens()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>alpha</th>\n",
       "      <th>rsqs</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.8011</td>\n",
       "      <td>0.1088</td>\n",
       "      <td>0.6685</td>\n",
       "      <td>0.6556</td>\n",
       "      <td>0.6813</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.6409</td>\n",
       "      <td>0.0728</td>\n",
       "      <td>0.6708</td>\n",
       "      <td>0.6580</td>\n",
       "      <td>0.6836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.4807</td>\n",
       "      <td>0.0425</td>\n",
       "      <td>0.6731</td>\n",
       "      <td>0.6604</td>\n",
       "      <td>0.6859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.3204</td>\n",
       "      <td>0.0194</td>\n",
       "      <td>0.6754</td>\n",
       "      <td>0.6627</td>\n",
       "      <td>0.6882</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.1602</td>\n",
       "      <td>0.0050</td>\n",
       "      <td>0.6778</td>\n",
       "      <td>0.6650</td>\n",
       "      <td>0.6905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.6801</td>\n",
       "      <td>0.6673</td>\n",
       "      <td>0.6929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.1602</td>\n",
       "      <td>0.0050</td>\n",
       "      <td>0.6824</td>\n",
       "      <td>0.6696</td>\n",
       "      <td>0.6953</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.3204</td>\n",
       "      <td>0.0200</td>\n",
       "      <td>0.6848</td>\n",
       "      <td>0.6718</td>\n",
       "      <td>0.6977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.4807</td>\n",
       "      <td>0.0443</td>\n",
       "      <td>0.6871</td>\n",
       "      <td>0.6741</td>\n",
       "      <td>0.7001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.6409</td>\n",
       "      <td>0.0769</td>\n",
       "      <td>0.6894</td>\n",
       "      <td>0.6763</td>\n",
       "      <td>0.7026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.8011</td>\n",
       "      <td>0.1164</td>\n",
       "      <td>0.6918</td>\n",
       "      <td>0.6785</td>\n",
       "      <td>0.7050</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    alpha   rsqs  New ATE  New ATE LB  New ATE UB\n",
       "0 -0.8011 0.1088   0.6685      0.6556      0.6813\n",
       "0 -0.6409 0.0728   0.6708      0.6580      0.6836\n",
       "0 -0.4807 0.0425   0.6731      0.6604      0.6859\n",
       "0 -0.3204 0.0194   0.6754      0.6627      0.6882\n",
       "0 -0.1602 0.0050   0.6778      0.6650      0.6905\n",
       "0  0.0000 0.0000   0.6801      0.6673      0.6929\n",
       "0  0.1602 0.0050   0.6824      0.6696      0.6953\n",
       "0  0.3204 0.0200   0.6848      0.6718      0.6977\n",
       "0  0.4807 0.0443   0.6871      0.6741      0.7001\n",
       "0  0.6409 0.0769   0.6894      0.6763      0.7026\n",
       "0  0.8011 0.1164   0.6918      0.6785      0.7050"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lls_x_bias_alignment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature</th>\n",
       "      <th>partial_rsqs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>feature_0</td>\n",
       "      <td>-0.0631</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>feature_1</td>\n",
       "      <td>-0.0619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>feature_2</td>\n",
       "      <td>-0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>feature_3</td>\n",
       "      <td>-0.0033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>feature_4</td>\n",
       "      <td>-0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>feature_5</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     feature partial_rsqs\n",
       "0  feature_0      -0.0631\n",
       "1  feature_1      -0.0619\n",
       "2  feature_2      -0.0001\n",
       "3  feature_3      -0.0033\n",
       "4  feature_4      -0.0001\n",
       "5  feature_5       0.0000"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "partial_rsqs_x_bias_alignment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAH2CAYAAAC4DWw+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de1Tc9Z3/8RfMcEnEhITARNdEK2JCTJEkCqkao8RL3WwTzZpqo9s0WVdMaVdblaBnf0kv3lnTEysmaZBNaGNbbDFRcdvtKmdJTIiXmq5atTQpW9MUmIDQQIBhLr8/4owzMMBAYOAz83ycw4l8+c58P29ReOXz/Xze35jW1laPAAAADBE71gMAAAAYCsILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRQg4vpaWlysrKks1m0+LFi7V///5+z123bp2Sk5P7fJx99tlDOmfv3r1Bz/nDH/4wzHIBAIDpYkJpUldZWak777xTTz75pBYuXKjS0lI999xzqq2t1YwZM/qc39bWpq6uroBj119/vS677DI988wzIZ+zd+9efelLX1Jtba2mTJniO2/atGmyWCxDrxYAABgvpJmXkpISrVq1SqtXr9asWbNUXFwsm82msrKyoOdPnjxZNpvN9/GnP/1J9fX1Wr169ZDO8UpNTQ04l+ACAED0GjS8OBwOHTp0SHl5eQHH8/LydPDgwZAusnPnTmVmZio3N3dY51x11VWaNWuWli1bppqampCuCQAAItOg4aW5uVkul0upqakBx1NTU9XU1DToBdra2rR792599atfHfI506dP16ZNm/TjH/9YP/7xj5WRkaHly5cPuN4GAABEtlHfbVRRUSG3261bb711yOdkZGRo7dq1ys7OVk5Ojp588kldc801euqpp0Z72COqrq5urIcwJqK1bil6a4/WuqXorT1a65aofSwNGl5SUlJksVhkt9sDjtvtdqWlpQ16gZ07d2rZsmUBC26Hc47XggULdOTIkUHPAwAAkWnQ8BIfH6/s7GxVV1cHHK+urh5wDYskvf3223rvvfcGvGUUyjn+3n33XdlstpDOBQAAkccaykkFBQXKz8/XggULlJubq7KyMjU0NGjNmjWSpPz8fEnStm3bAl63Y8cOpaena9GiRf2+90DnPPPMM5o5c6YyMzPlcDhUUVGhqqoqlZeXh1wgAACILCGFlxUrVqilpUXFxcVqbGxUZmamKioqNHPmTEnS0aNH+7zmxIkTqqysVGFhYb/vO9g5PT092rBhg44dO6bExETfda+77rpQhg0AACJQSOFFku644w7dcccdQb9WVVXV59iZZ56pv/zlLwO+52Dn3H333br77rtDHSIAAIgCPNsIAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjhBxeSktLlZWVJZvNpsWLF2v//v39nrtu3TolJyf3+Tj77LN95+zduzfoOX/4wx8C3mvPnj3Kzc1VWlqacnNz9dJLLw2jTAAAEClCCi+VlZUqKirSvffeq5qaGuXk5GjlypX6+OOPg57/2GOP6aOPPgr4OO+883TjjTf2Obe2tjbgvPT0dN/X3njjDa1du1YrV67U3r17tXLlSn3ta1/TW2+9NcxyAQCA6UIKLyUlJVq1apVWr16tWbNmqbi4WDabTWVlZUHPnzx5smw2m+/jT3/6k+rr67V69eo+56ampgaca7FYfF/bsmWLFi1apPvuu0+zZs3SfffdpyuuuEJbtmwZZrkAAMB0g4YXh8OhQ4cOKS8vL+B4Xl6eDh48GNJFdu7cqczMTOXm5vb52lVXXaVZs2Zp2bJlqqmpCfjam2++2ee6S5YsCfm6AAAg8lgHO6G5uVkul0upqakBx1NTU9XU1DToBdra2rR7925t2LAh4Pj06dO1adMmzZ8/Xw6HQz//+c+1fPlyVVVV6bLLLpMkNTY2Duu6dXV1g44r3MbjmMIhWuuWorf2aK1bit7ao7VuidpHS0ZGxoBfHzS8nK6Kigq53W7deuutAcczMjICBpeTk6M///nPeuqpp3zhZbgGKzrc6urqxt2YwiFa65ait/ZorVuK3tqjtW6J2sey9kFvG6WkpMhischutwcct9vtSktLG/QCO3fu1LJlyzRlypRBz12wYIGOHDni+9xmsw37ugAAIDINGl7i4+OVnZ2t6urqgOPV1dVB17D4e/vtt/Xee+/pq1/9akiDeffdd2Wz2XyfX3rppcO6LgAAiFwh3TYqKChQfn6+FixYoNzcXJWVlamhoUFr1qyRJOXn50uStm3bFvC6HTt2KD09XYsWLerzns8884xmzpypzMxMORwOVVRUqKqqSuXl5b5z7rrrLv393/+9fvCDH2jp0qV6+eWXtXfvXv3qV78adsEAAMBsIYWXFStWqKWlRcXFxWpsbFRmZqYqKio0c+ZMSdLRo0f7vObEiROqrKxUYWFh0Pfs6enRhg0bdOzYMSUmJvre87rrrvOd4w1KDz30kB555BF97nOfU1lZmS655JLh1AoAACJATGtrq2esBxHpxnph01iJ1rql6K09WuuWorf2aK1bovZxvWAXAABgPCG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKCGHl9LSUmVlZclms2nx4sXav39/v+euW7dOycnJfT7OPvts3zkvvviibrrpJqWnp+ucc87RkiVL9MorrwS8z65du4K+T1dX1zBKBQAAkSCk8FJZWamioiLde++9qqmpUU5OjlauXKmPP/446PmPPfaYPvroo4CP8847TzfeeKPvnNdff11XXnmlKioqVFNTo2uvvVa33357n1A0ceLEPu+VmJh4GiUDAACTWUM5qaSkRKtWrdLq1aslScXFxXr11VdVVlamjRs39jl/8uTJmjx5su/z2tpa1dfXa9u2bb5jjz/+eMBrioqK9F//9V+qqqrSZZdd5jseExMjm802tKoAAEDEGnTmxeFw6NChQ8rLyws4npeXp4MHD4Z0kZ07dyozM1O5ubkDntfe3q7k5OSAY52dnZo7d67mzJmjW265Rb/73e9CuiYAAIhMg868NDc3y+VyKTU1NeB4amqqmpqaBr1AW1ubdu/erQ0bNgx43vbt23Xs2DHdcsstvmMZGRl6+umnNXfuXLW3t2vr1q364he/qH379ik9Pb3f96qrqxt0XOE2HscUDtFatxS9tUdr3VL01h6tdUvUPloyMjIG/HpIt41OR0VFhdxut2699dZ+z9mzZ482bNigsrIyzZw503c8JydHOTk5vs9zc3O1aNEibdu2TU888US/7zdY0eFWV1c37sYUDtFatxS9tUdr3VL01h6tdUvUPpa1D3rbKCUlRRaLRXa7PeC43W5XWlraoBfYuXOnli1bpilTpgT9+p49e3TXXXdp69atuuGGGwZ8L4vFouzsbB05cmTQ6wIAgMg0aHiJj49Xdna2qqurA45XV1cPuobl7bff1nvvvaevfvWrQb/+wgsvKD8/X88884yWL18+6GA9Ho/ef/99FvACABDFQrptVFBQoPz8fC1YsEC5ubkqKytTQ0OD1qxZI0nKz8+XpIDdRJK0Y8cOpaena9GiRX3e85e//KXy8/P1/e9/X5dddpkaGxslnQpL3lmaxx57TJdeeqnS09P1t7/9Tdu2bdP777+vTZs2Db9iAABgtJDCy4oVK9TS0qLi4mI1NjYqMzNTFRUVvvUpR48e7fOaEydOqLKyUoWFhUHfs6ysTE6nUw888IAeeOAB3/HLL79cVVVVkk4t9r377rvV1NSkSZMmKSsrS6+88ooWLFgw5EIBAEBkiGltbfWM9SAi3VgvbBor0Vq3FL21R2vdUvTWHq11S9Q+rhfsAgAAjCeEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADCKdawHAAAAxi+PxyOn06nu7m61t7ero6NDn3zyyZiOifACAEAU83g86unpUXd3tzo6OtTe3q7u7m719PTI4XCop6dHbrdbbrdbMTExslgs6uzsHNMxE14AAIhg/uGkvb09IJx4P3qHk9jYz1aVxMbGBnw+HhBeAAAwmMfjkcPhUFdXlzo6OtTR0dEnnLhcLnk8HmPCyWAILwAAjGP+4cS75qR3OPF4PL6ZE6vVqpiYGN/rTQwngyG8AAAwhjwej7q7uwNu63jXmvjf1vF4PIqNjZXFYgkIJxaLZQxHPzYILwAAjCK3291n5sThcAQEFO/MicViCRpOojGgDITwAgDAaXC5XHI4HOrs7PStOfHfqeN0On0LYoOFE6uVX8VDxb8xAAAG4HK51N3drc7OTp04cUKdnZ3q6enRsWPHdPz4cTmdTnk8ngFv6zBzMrJCXsFTWlqqrKws2Ww2LV68WPv37+/33HXr1ik5ObnPx9lnnx1w3r59+7R48WLZbDZdfPHFKisrO63rAgAwVE6nUx0dHbLb7frTn/6k3//+9/rd736nt956SwcOHND+/fv15ptv6t1339XRo0f1ySefqKOjQy6XS9KpmZO4uDjFx8f3WSyL0RHSzEtlZaWKior05JNPauHChSotLdXKlStVW1urGTNm9Dn/scce03e+852AY9dff70uu+wy3+f19fX68pe/rNtuu00/+tGPVFtbq3vvvVcpKSlavnz5sK4LAIA//+6wJ0+eVHt7u7q6ugLWm7hcLrndbknybSPmts74FtJ3pKSkRKtWrdLq1aslScXFxXr11VdVVlamjRs39jl/8uTJmjx5su/z2tpa1dfXa9u2bb5j//Ef/6Hp06eruLhYkjRr1iy99dZbevrpp33hZajXBQBEl1C6w3p7nEingoj/tmHv1mKYZdDvmMPh0KFDh/TNb34z4HheXp4OHjwY0kV27typzMxM5ebm+o698cYbysvLCzhvyZIl+ulPf+pbeX261wUAmC0aG7BhcIOGl+bmZrlcLqWmpgYcT01NVVNT06AXaGtr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4YcfVlZWltLS0jR37lxt3bo1TKMdOUOt+/nnn9cVV1yhs846SxdeeKHuvPNONTY2juoYCS8j7IEHHtBLL72kZ599Vq+88opOnDihW265RS6Xq9/XtLa26vrrr5fH41FFRYUOHjyoJ554QqmpqWEc+ekbTu1eb775pnbs2KGLLrooDCMdWcOpe9++ffrnf/5n/frXv9aLL74oq9WqG2+8UZ988kkYRz40lZWVKioq0r333quamhrl5ORo5cqV+vjjj4OeX19fry9/+cvKyclRTU2Nvv3tb6uwsFB79uwJ88hP31Brf/3113XllVeqoqJCNTU1uvbaa3X77beH/It/vBhq3V6tra266667tHjx4jCNdOQNp/a1a9fq1Vdf1ebNm439mTbUumtra5Wfn6+vfOUrOnDggHbt2qUPP/xQ//Iv/zKq46TPywhqa2vTBRdcoJKSEn35y1+WJB09elSf//zn9Ytf/EJLliwJ+rrvfe97ev311/XrX/86nMMdUcOt3fvaxYsX66mnntLjjz+uOXPmqLi4OFxDPy2nU7e/9vZ2zZw5U7t27dINN9wwmkMetiVLluiiiy7SU0895Ts2f/58LV++XBs3buxz/saNG/XSSy/pt7/9re/YN7/5TX344Yf6zW9+E5Yxj5Sh1h5MXl6evvCFL+jhhx8erWGOuOHWffvtt2vu3LnyeDx68cUXdeDAgXAMd0QNtfbXXntNX/va1/TOO+8oJSUlnEMdUUOt+4c//KG2bdum9957z3fsJz/5idavXz+kmfehYuZlBB06dEg9PT3Ky8vzHTvnnHM0a9YsHTx4sN/XVVVVacGCBVqzZo0uuOACXXHFFfrRj34kj8ecXDnc2iXpnnvu0fLly3XllVeO9jBH3OnU7a+9vV1ut1vJycmjMczT5nA4dOjQoYA6pVO/kPur84033uhz/pIlS/TOO++op6dn1MY60oZTezDt7e3j9vsbzHDrLi0tld1uN+72r7/h1F5VVaV58+appKREc+bM0fz581VYWKj29vZwDHlEDKfu3NxcNTY26j//8z/l8XjU3NysyspKXXvttaM6VuuovnuUaWpqksVi6ZO6U1NT1dTU1O/r6uvr9eyzz+rrX/+67rnnHr377rtav369JOnOO+8c1TGPlOHWvnPnTh05ckQ/+tGPRnuIo2K4dfdWVFSkz3/+88rJyRnp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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by confounding vector and plot Confidence Intervals for ATE\n",
    "sens_x_bias_alignment.plot(lls_x_bias_alignment, ci=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAH2CAYAAACcFOP+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3df1zV9f3///vh8EtFQREOWqJFqJgRpYJrMRtWW283LRez3Jbpeke+rXfbKqTefWs104pV0/kzGVP2zveixjSn37bexXvoDLWWq6wZabRM+REIggIHzjmfP4AjR36cAwL+eN6ul8u5wHme5+vH45wD3Hm+nq/XsVRVVbkEAABgIL+zvQMAAABnC0EIAAAYiyAEAACMRRACAADGIggBAABjEYQAAICxCEIAAMBYPgehrKwsxcfHy2azadq0adq1a1enfRcuXKiwsLB2t5EjR3arz44dOzrs88knn/SwXAAAgFMsvlxQMS8vT3fffbeee+45TZ06VVlZWdq0aZMKCws1atSodv2rq6tVX1/v0fatb31L11xzjVavXu1znx07dui73/2uCgsLNXToUHe/4cOHy2q1dr9aAACANnwaEVq1apXmzp2refPmady4ccrMzJTNZlN2dnaH/UNDQ2Wz2dy3zz77TMXFxZo3b163+rSKiIjw6EsIAgAAvcFrELLb7dq3b59SUlI82lNSUrR7926fNrJx40bFxcUpKSmpR32uu+46jRs3TjNnzlRBQYFP2wQAAPDGaxCqqKiQw+FQRESER3tERITKysq8bqC6ulqbN2/WHXfc0e0+UVFRev755/W73/1Ov/vd7xQbG6tZs2Z1OT8JAADAV31+1lhubq6cTqduu+22bveJjY3VggULlJCQoMTERD333HO6/vrrtWLFir7e7XNSUVHR2d6Fs8bk2iWz6ze5dsns+k2uXaL+/uI1CIWHh8tqtaq8vNyjvby8XJGRkV43sHHjRs2cOdNjsnNP+rSaNGmSDh065LUfAACAN16DUGBgoBISEpSfn+/Rnp+f3+WcH0l699139eGHH3Z5WMyXPm198MEHstlsPvUFAADoir8vnRYtWqS0tDRNmjRJSUlJys7OVklJiebPny9JSktLkyStW7fOY7kNGzYoJiZGycnJna67qz6rV69WdHS04uLiZLfblZubq23b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AgAAxiIIAQAAYxGEAACAsQhCAADAWAQhAABgLILQWdLQ0KCHHnpIl156qUaOHKnbbrtNX375pdflsrKyFB8fL5vNpmnTpmnXrl0ej8+YMUNhYWEetwULFnj0qaqq0t13363o6GhFR0fr7rvvVlVVVa/W15W+qP3YsWN66KGHNGXKFEVFRenyyy/Xz372M1VWVnqs44orrmj3/Pz85z/v7RJ93u+O7Ny5U9OmTZPNZtOVV16p7Ozsbq+zp89xb+vt2p9//nl985vf1KhRoxQTE6M5c+boo48+8uizcOHCdq/x9ddf3+u1+aK361+2bFm72saOHevRx+VyadmyZRo/fryioqI0Y8YMffzxx71emze9XXtHP7thYWH6/ve/7+7jy/PTX7pTf0lJie666y5NmTJFw4YN08KFCzvst2XLFiUlJSkyMlJJSUnaunWrx+Pn42vvS+0bN27UTTfdpNGjRys6Olrf+c539Pbbb3v0OZPXniB0ljz88MPaunWrfvOb32j79u2qqanRnDlz5HA4Ol0mLy9PGRkZeuCBB1RQUKDExESlpqbqiy++8Oj3gx/8QAcOHHDfXnjhBY/H77rrLr3//vt69dVX9eqrr+r9999XWlpan9TZkb6o/ejRozp69KieeOIJ7dq1S+vWrdOuXbv04x//uN260tPTPZ6fBx98sM9q9fU1a1VcXKzvf//7SkxMVEFBgX72s58pPT1dW7Zs6dY6e/Ic97a+qH3nzp368Y9/rD//+c967bXX5O/vr5tvvlnHjh3zWNd1113n8Rq/8sorfVprR/qifkmKjY31qO30PzLLly/XqlWr9Mwzz+itt95SRESEbrnlFtXU1PRZrafri9rz8/M96v7rX/8qi8Wim2++2WNd3p6f/tDd+hsaGjRs2DD95Cc/0eTJkzvss2fPHi1YsECpqanasWOHUlNTdeedd+qdd95x9zkfX3tfat+5c6duueUWvfbaa3rzzTcVGxur733vezp48KBHv56+9lxH6Cyorq7WZZddplWrVrn/mzl8+LCuuOIKvfrqq5o+fXqHy02fPl2XX365VqxY4W67+uqrNWvWLD3++OOSmkeEJkyYoMzMzA7XceDAASUlJen111/X1KlTJUlvv/22brrpJu3du1exsbG9WWo7fVn76f7yl79ozpw5+vzzzzVkyBBJzf9V3n333brvvvt6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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by rsquare with partial r-square results by each individual features\n",
    "sens_x_bias_alignment.plot(lls_x_bias_alignment, partial_rsqs_x_bias_alignment, type='r.squared', partial_rsqs=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Drop One Confounder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature_1</th>\n",
       "      <th>feature_2</th>\n",
       "      <th>feature_3</th>\n",
       "      <th>feature_4</th>\n",
       "      <th>feature_5</th>\n",
       "      <th>target</th>\n",
       "      <th>outcome</th>\n",
       "      <th>pihat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.2911</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.8720</td>\n",
       "      <td>0.5190</td>\n",
       "      <td>0.0822</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0220</td>\n",
       "      <td>0.7657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.3096</td>\n",
       "      <td>0.5115</td>\n",
       "      <td>0.2048</td>\n",
       "      <td>0.8914</td>\n",
       "      <td>0.5015</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0732</td>\n",
       "      <td>0.2304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0765</td>\n",
       "      <td>0.7428</td>\n",
       "      <td>0.6951</td>\n",
       "      <td>0.4580</td>\n",
       "      <td>0.7800</td>\n",
       "      <td>0</td>\n",
       "      <td>-1.4947</td>\n",
       "      <td>0.1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.3967</td>\n",
       "      <td>0.6278</td>\n",
       "      <td>0.2086</td>\n",
       "      <td>0.3865</td>\n",
       "      <td>0.8860</td>\n",
       "      <td>0</td>\n",
       "      <td>0.6458</td>\n",
       "      <td>0.2533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0578</td>\n",
       "      <td>0.3972</td>\n",
       "      <td>0.4100</td>\n",
       "      <td>0.5760</td>\n",
       "      <td>0.4764</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0018</td>\n",
       "      <td>0.1000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   feature_1  feature_2  feature_3  feature_4  feature_5  target  outcome  \\\n",
       "0     0.2911     0.0432     0.8720     0.5190     0.0822       1   2.0220   \n",
       "1     0.3096     0.5115     0.2048     0.8914     0.5015       0  -0.0732   \n",
       "2     0.0765     0.7428     0.6951     0.4580     0.7800       0  -1.4947   \n",
       "3     0.3967     0.6278     0.2086     0.3865     0.8860       0   0.6458   \n",
       "4     0.0578     0.3972     0.4100     0.5760     0.4764       0  -0.0018   \n",
       "\n",
       "   pihat  \n",
       "0 0.7657  \n",
       "1 0.2304  \n",
       "2 0.1000  \n",
       "3 0.2533  \n",
       "4 0.1000  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_new = df.drop('feature_0', axis=1).copy()\n",
    "INFERENCE_FEATURES_new = INFERENCE_FEATURES.copy()\n",
    "INFERENCE_FEATURES_new.remove('feature_0')\n",
    "df_new.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "['feature_1', 'feature_2', 'feature_3', 'feature_4', 'feature_5']"
      ],
      "text/plain": [
       "['feature_1', 'feature_2', 'feature_3', 'feature_4', 'feature_5']"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "INFERENCE_FEATURES_new"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sensitivity Analysis Summary Report (with One-sided confounding function and default alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "sens_x_new = Sensitivity(df=df_new, inference_features=INFERENCE_FEATURES_new, p_col='pihat',\n",
    "                     treatment_col=TREATMENT_COL, outcome_col=OUTCOME_COL, learner=learner_x)\n",
    "# Here for Selection Bias method will use default one-sided confounding function and alpha (quantile range of outcome values) input\n",
    "sens_sumary_x_new = sens_x_new.sensitivity_analysis(methods=['Placebo Treatment',\n",
    "                                                     'Random Cause',\n",
    "                                                     'Subset Data',\n",
    "                                                     'Random Replace',\n",
    "                                                     'Selection Bias'], sample_size=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Placebo Treatment</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.0104</td>\n",
       "      <td>-0.0033</td>\n",
       "      <td>0.0242</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Cause</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.7943</td>\n",
       "      <td>0.8201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Subset Data(sample size @0.5)</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.8180</td>\n",
       "      <td>0.7998</td>\n",
       "      <td>0.8361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.8068</td>\n",
       "      <td>0.7938</td>\n",
       "      <td>0.8198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.80111, with r-sqaure:...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>1.3799</td>\n",
       "      <td>1.3673</td>\n",
       "      <td>1.3925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.64088, with r-sqaure:...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>1.2654</td>\n",
       "      <td>1.2527</td>\n",
       "      <td>1.2780</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.48066, with r-sqaure:...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>1.1508</td>\n",
       "      <td>1.1381</td>\n",
       "      <td>1.1635</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.32044, with r-sqaure:...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>1.0363</td>\n",
       "      <td>1.0235</td>\n",
       "      <td>1.0490</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.16022, with r-sqaure:...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.9217</td>\n",
       "      <td>0.9089</td>\n",
       "      <td>0.9345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.0, with r-sqaure:0.0</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.7943</td>\n",
       "      <td>0.8200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.16022, with r-sqaure:0...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.6926</td>\n",
       "      <td>0.6796</td>\n",
       "      <td>0.7056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.32044, with r-sqaure:0...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.5780</td>\n",
       "      <td>0.5650</td>\n",
       "      <td>0.5911</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.48066, with r-sqaure:0...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.4635</td>\n",
       "      <td>0.4503</td>\n",
       "      <td>0.4767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.64088, with r-sqaure:0...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.3489</td>\n",
       "      <td>0.3356</td>\n",
       "      <td>0.3623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.80111, with r-sqaure:0...</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.2344</td>\n",
       "      <td>0.2209</td>\n",
       "      <td>0.2479</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Method    ATE New ATE  \\\n",
       "0                                  Placebo Treatment 0.8072  0.0104   \n",
       "0                                       Random Cause 0.8072  0.8072   \n",
       "0                      Subset Data(sample size @0.5) 0.8072  0.8180   \n",
       "0                                     Random Replace 0.8072  0.8068   \n",
       "0  Selection Bias (alpha@-0.80111, with r-sqaure:... 0.8072  1.3799   \n",
       "0  Selection Bias (alpha@-0.64088, with r-sqaure:... 0.8072  1.2654   \n",
       "0  Selection Bias (alpha@-0.48066, with r-sqaure:... 0.8072  1.1508   \n",
       "0  Selection Bias (alpha@-0.32044, with r-sqaure:... 0.8072  1.0363   \n",
       "0  Selection Bias (alpha@-0.16022, with r-sqaure:... 0.8072  0.9217   \n",
       "0       Selection Bias (alpha@0.0, with r-sqaure:0.0 0.8072  0.8072   \n",
       "0  Selection Bias (alpha@0.16022, with r-sqaure:0... 0.8072  0.6926   \n",
       "0  Selection Bias (alpha@0.32044, with r-sqaure:0... 0.8072  0.5780   \n",
       "0  Selection Bias (alpha@0.48066, with r-sqaure:0... 0.8072  0.4635   \n",
       "0  Selection Bias (alpha@0.64088, with r-sqaure:0... 0.8072  0.3489   \n",
       "0  Selection Bias (alpha@0.80111, with r-sqaure:0... 0.8072  0.2344   \n",
       "\n",
       "  New ATE LB New ATE UB  \n",
       "0    -0.0033     0.0242  \n",
       "0     0.7943     0.8201  \n",
       "0     0.7998     0.8361  \n",
       "0     0.7938     0.8198  \n",
       "0     1.3673     1.3925  \n",
       "0     1.2527     1.2780  \n",
       "0     1.1381     1.1635  \n",
       "0     1.0235     1.0490  \n",
       "0     0.9089     0.9345  \n",
       "0     0.7943     0.8200  \n",
       "0     0.6796     0.7056  \n",
       "0     0.5650     0.5911  \n",
       "0     0.4503     0.4767  \n",
       "0     0.3356     0.3623  \n",
       "0     0.2209     0.2479  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Here we can see the New ATE restul from Random Replace method actually changed ~ 12.5%\n",
    "sens_sumary_x_new"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Replace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.9022</td>\n",
       "      <td>0.8893</td>\n",
       "      <td>0.9152</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Method    ATE New ATE New ATE LB New ATE UB\n",
       "0  Random Replace 0.8072  0.9022     0.8893     0.9152"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Replace feature_0 with an irrelevent variable\n",
    "sens_x_replace_new = SensitivityRandomReplace(df=df_new, inference_features=INFERENCE_FEATURES_new, p_col='pihat',\n",
    "                                          treatment_col=TREATMENT_COL, outcome_col=OUTCOME_COL, learner=learner_x,\n",
    "                                          sample_size=0.9, replaced_feature='feature_1')\n",
    "s_check_replace_new = sens_x_replace_new.summary(method='Random Replace')\n",
    "s_check_replace_new"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Selection Bias: Alignment confounding Function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "sens_x_bias_alignment_new = SensitivitySelectionBias(df_new, INFERENCE_FEATURES_new, p_col='pihat', treatment_col=TREATMENT_COL,\n",
    "                                                 outcome_col=OUTCOME_COL, learner=learner_x, confound='alignment',\n",
    "                                                 alpha_range=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "lls_x_bias_alignment_new, partial_rsqs_x_bias_alignment_new = sens_x_bias_alignment_new.causalsens()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>alpha</th>\n",
       "      <th>rsqs</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.8011</td>\n",
       "      <td>0.1121</td>\n",
       "      <td>0.7919</td>\n",
       "      <td>0.7789</td>\n",
       "      <td>0.8049</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.6409</td>\n",
       "      <td>0.0732</td>\n",
       "      <td>0.7950</td>\n",
       "      <td>0.7820</td>\n",
       "      <td>0.8079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.4807</td>\n",
       "      <td>0.0419</td>\n",
       "      <td>0.7980</td>\n",
       "      <td>0.7851</td>\n",
       "      <td>0.8109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.3204</td>\n",
       "      <td>0.0188</td>\n",
       "      <td>0.8011</td>\n",
       "      <td>0.7882</td>\n",
       "      <td>0.8139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.1602</td>\n",
       "      <td>0.0047</td>\n",
       "      <td>0.8041</td>\n",
       "      <td>0.7912</td>\n",
       "      <td>0.8170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.8072</td>\n",
       "      <td>0.7943</td>\n",
       "      <td>0.8200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.1602</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.8102</td>\n",
       "      <td>0.7973</td>\n",
       "      <td>0.8231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.3204</td>\n",
       "      <td>0.0189</td>\n",
       "      <td>0.8133</td>\n",
       "      <td>0.8003</td>\n",
       "      <td>0.8262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.4807</td>\n",
       "      <td>0.0420</td>\n",
       "      <td>0.8163</td>\n",
       "      <td>0.8032</td>\n",
       "      <td>0.8294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.6409</td>\n",
       "      <td>0.0736</td>\n",
       "      <td>0.8194</td>\n",
       "      <td>0.8062</td>\n",
       "      <td>0.8325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.8011</td>\n",
       "      <td>0.1127</td>\n",
       "      <td>0.8224</td>\n",
       "      <td>0.8091</td>\n",
       "      <td>0.8357</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    alpha   rsqs  New ATE  New ATE LB  New ATE UB\n",
       "0 -0.8011 0.1121   0.7919      0.7789      0.8049\n",
       "0 -0.6409 0.0732   0.7950      0.7820      0.8079\n",
       "0 -0.4807 0.0419   0.7980      0.7851      0.8109\n",
       "0 -0.3204 0.0188   0.8011      0.7882      0.8139\n",
       "0 -0.1602 0.0047   0.8041      0.7912      0.8170\n",
       "0  0.0000 0.0000   0.8072      0.7943      0.8200\n",
       "0  0.1602 0.0048   0.8102      0.7973      0.8231\n",
       "0  0.3204 0.0189   0.8133      0.8003      0.8262\n",
       "0  0.4807 0.0420   0.8163      0.8032      0.8294\n",
       "0  0.6409 0.0736   0.8194      0.8062      0.8325\n",
       "0  0.8011 0.1127   0.8224      0.8091      0.8357"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lls_x_bias_alignment_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature</th>\n",
       "      <th>partial_rsqs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>feature_1</td>\n",
       "      <td>-0.0345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>feature_2</td>\n",
       "      <td>-0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>feature_3</td>\n",
       "      <td>-0.0038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>feature_4</td>\n",
       "      <td>-0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>feature_5</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     feature partial_rsqs\n",
       "0  feature_1      -0.0345\n",
       "1  feature_2      -0.0001\n",
       "2  feature_3      -0.0038\n",
       "3  feature_4      -0.0001\n",
       "4  feature_5       0.0000"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "partial_rsqs_x_bias_alignment_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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X4nVuqXYrT1W65Zit/ZYrVui9n69YBcAAKA/IbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTIbwAAABTCTu8FBcXa8KECXI4HJoxY4Z279592rH33nuvhg0b1uYxcuTIwJjXX39dN9xwg9LT0zVq1CjNnDlTb775ZsjrbNmypd3XaWxs7EapAAAgGoQVXsrKyrR69WotX75cO3fuVHZ2thYsWKDPPvus3fHr16/XRx99FPIYM2aMrr/++sCYd999V9OnT1dpaal27typq6++WrfddlubUJSUlNTmtRISEs6gZAAAYGa2cAYVFhbqlltu0cKFCyVJ+fn5+t3vfqeSkhI99NBDbcYPHTpUQ4cODXxcUVGhw4cPq6ioKHDsiSeeCHnO6tWr9Zvf/EY7duzQ5ZdfHjhusVjkcDi6VhUAAIhanZ55aW5u1v79+5WbmxtyPDc3V3v37g3rTTZv3qzMzEzl5OR0OK6+vl7Dhg0LOdbQ0KDx48froosu0o033qg//elPYb0nAACITp2eeampqZHX61VKSkrI8ZSUFFVXV3f6BkePHtVrr72mtWvXdjhu48aN+uKLL3TjjTcGjmVkZOi5557T+PHjVV9frxdeeEGzZs3SO++8o/T09NO+VmVlZafz6m39cU69IVbrlmK39litW4rd2mO1bonaIyUjI6PDz4fVNjoTpaWl8vl8uummm047Ztu2bVq7dq1KSkqUlpYWOJ6dna3s7OzAxzk5OZo2bZqKior05JNPnvb1Oiu6t1VWVva7OfWGWK1bit3aY7VuKXZrj9W6JWrvy9o7bRslJyfLarXK5XKFHHe5XEpNTe30DTZv3qy5c+fqrLPOavfz27Zt0z333KMXXnhBs2fP7vC1rFarJk6cqEOHDnX6vgAAIDp1Gl7sdrsmTpyo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R49q5cqVqqqq0ssvv9wb0z5j3ak7OztbmzZt0uLFi9XQ0CCPx6OrrrpKGzZsiOhcCS9hePTRR/XUU091OGb79u3dfn2fz6dLL700cErukksu0aFDh1RcXNzn4SWStVdWVurhhx/W22+/rfj4+G69RqRE+mse7Ec/+pEqKir09ttvm/oHPtq3bds2rV27ViUlJUpLS+vr6URMU1OT7rzzTj3yyCMaM2ZMX0+n1/l8PlksFm3cuFFDhw6VJOXn52v+/Pmqrq5WampqH88wMg4ePKhVq1ZpxYoVys3NldPp1IMPPqhly5apqKgoYu9LeAnDvffeG1jPcDqjRo3Svn375PV6VVNTo+HDhwc+53K5Olxx73A4NHbs2JBjF154oY4cOXJmE+8Bkaz9vffeU01NjS677LLAMa/Xq927d6ukpERffPGFBgwY0DOFdFGkv+Z+a9asUVlZ1UXrCwAABDBJREFUmbZv396vf+AnJyfLarXK5XKFHHe5XKf9oZyamtrueJvNZqo1Ad2p3W/btm2655579MILL/TbtUyn09W6q6qq9NFHH2nJkiVasmSJpJZ/0A3DUHJysrZu3dqmHdFfdedr7nA4dM455wSCi9Tyc1xqWQdnhvDSnboLCgo0adIk3XfffZKk8ePHKykpSbNnz9batWt17rnnRmSuhJcwJCcnh/XDduLEiYqPj1d5ebkWLFggSfr888/10UcfKScn57TPu+yyy/Txxx+HHPv44481evToM5t4D4hk7XPmzNGll14acmzJkiVKT0/Xf/zHf8hut595Ad0U6a+5JK1atUq/+tWvtH379sAPuf7Kbrdr4sSJKi8v1/XXXx84Xl5errlz57b7nOzsbL3xxhshx8rLy3XppZf2uzNtHelO7ZL0q1/9Svfee682bNigefPm9cZUe1RX6x45cmSbq6k2bdqk8vJyvfLKK6Y669Sdr/lll12mbdu2qb6+XoMGDZIkffLJJ5LUL36Wh6M7dTc0NLQ5Y+z/2OfzRWyu1tWrV6+L2KvHmISEBFVVVam4uFgXX3yxjh49qh/+8IcaMmSIfvzjHysurmV99JQpUyRJWVlZklp+g3/iiScUFxenESNG6H//93/16KOP6oc//GFgTH/XndoTEhKUkpIS8ti6davS0tJ06623ymKx9GVJYenu1/z+++/Xf//3f+ull17SqFGjdOLECZ04cUKS+jS0dWTw4MF6/PHHNWLECCUkJCg/P1+7d+/Wc889p6FDhyovL09vvPGGrrvuOknS+eefr2eeeUYul0ujR4/Wm2++qaefflqPPvqoxo0b18fVdE1Xa//lL3+pxYsX68c//rGuueaawNfX7XYrMTGxj6sJX1fqtlqtbf4+/+EPf9Ann3yiNWvW9Nvv69Pp6tf8ggsu0JYtW7R//36NGzdOn3zyiVasWKErrrhCt956ax9XE76u1t3Q0KCf/exnSk5O1tlnn62DBw9q9erVcjgcWrp0acTmyZmXHvb444/LarVq0aJFamxs1PTp0/XCCy+EJNPKykrV1NQEPp40aZK2bNmihx9+WPn5+Ro1apR+9KMf6a677uqLErqtO7VHg+7UXVxcLEltfiNftWqV1qxZ0zsT76L58+ertrZW+fn5cjqdyszMVGlpaeA36tZtzjFjxqi0tFQ/+tGPVFJSohEjRuiJJ54w5VmIrtZeUlIij8ejNWvWhHw9r7jiCu3YsaNX534mulp3NOlq7YMGDdJrr72mlStXKjc3V8OGDdOcOXPCvpS+v+hq3bfeeqvq6+u1ceNGPfDAAxoyZIimT5+udevWRXSe7PMCAABMhX1eAACAqRBeAACAqRBeAACAqRBeAACAqRBeAACAqRBeAACAqRBeAACAqRBeAACAqRBeAACAqfx/uZrmlz8fHOgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by confounding vector and plot Confidence Intervals for ATE\n",
    "sens_x_bias_alignment_new.plot(lls_x_bias_alignment_new, ci=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9+qrr8putys+Pl52u11bt24N1Ol3W0/XvX79ek2ePFkXX3yxEhIS9P3vf1/vvvuuX+dyzgefRYsWaevWrVq7dq1ef/11VVZWatq0aXI6nafcJi8vTwsXLtS8efO0fft2paamKj09XUePHm3X98UXX1RQ0Nl3mQJR9/Hjx3X8+HH98pe/1K5du5SVlaVdu3bpxz/+8Zkqq0vn29aRI0f0gx/8QKmpqdq+fbt+/vOf69FHH/UKrF3dZ28IRN07d+7Uj3/8Y7311lvasmWLgoODdeutt+rEiRNnqqwOBaLmZnv37tW6det02WWXBbqMLgtE3WVlZbrxxhvldruVm5urPXv26Nlnn1VcXNyZKqtTgaj7N7/5jbKzs7V8+XK99957WrZsmdasWaMVK1acqbI61dW6a2tr1b9/f82dO1dXXXWVzz7vvfee7rvvPqWnp2vHjh1KT0/Xvffeq/fffz+QpXRJIOreuXOnbrvtNm3ZskVvv/22kpKSdPvtt+vTTz/t9HzO6fv4lJeXa9iwYVq1apV+8IMfSJKOHTumyy+/XH/+8581ceJEn9tNnDhRl112mVauXOlpGzt2rKZMmaInnnjC0/b3v/9dP/rRj/S///u/SkpK0vr16zVlypTAFuWHQNfd2l/+8hdNmzZNn3/+uaKionq+mA509XyfeOIJbd26VX//+989bT/96U914MAB/fWvf+3WPntDIOpuq6qqSgkJCdqwYYMmT57c80V0UaBqLi8v14QJE7Ry5UotX75cl156qTIzMwNbTBcEou6nnnpK77zzjt56663AF9BNgah72rRp6tevn15++WVPnwcffFAnTpzQxo0bA1iN/07n58+0adPUv39/rV692qt95syZOnHihDZv3uxpmzJligYMGKC1a9f2bAHdFIi623K73RoxYoTmzZunjIyMDvuefUMZXbBv3z7V19crLS3N0zZ48GCNGDFCe/bs8blNXV2d9u3b57WNJKWlpXltU1lZqfvvv1+/+c1vzqr/U5ICW3dblZWV6tOnjyIiInrm5P3UnfN977332vWfOHGi/u///k/19fXdvgZnUiDq9qWqqkoul0sxMTE9c+KnIZA1z507V1OmTNF1113X8yd+mgJV97Zt25SSkqKZM2dq2LBhuvbaa/Xb3/5WbvfZ8f+4gar76quv1s6dO/XJJ59Ikg4cOKAdO3bohhtuCEAVXReonz979+71eW3O5Z9p3T1OTU2NXz/TzungU1RUJKvVqtjYWK/2uLg4FRUV+dympKRETqezXZhpu83Pf/5zTZw48az5j6a1QNbdWllZmX71q1/pnnvuUXBwcM+cvJ+6c75FRUU++zc0NKikpKRb+zzTAlG3LwsXLtTll1+u1NTUnjnx0xComtevX6/Dhw/rscceC8yJn6ZA1X3kyBGtXbtWQ4cO1SuvvKIHH3xQv/zlL7VmzZrAFNJFgap77ty5mjZtmux2uwYMGKCrr75a06dP1/333x+YQrooUD9/HA7HefczrTuWLFmivn37+jWCfWZ/m/lpyZIleu655zrsE8jFW3/605/08ccfKz8/P2DH8KW3626tqqpK06dP14UXXqinnnrqjBwTZ8YvfvEL7d69W2+++aasVmtvn05AFBQU6KmnntKbb76pkJCQ3j6dM8rlcunKK6/0TCFcccUVOnz4sLKzszVr1qxePrvAycvL05/+9CdlZ2dr5MiR+uijj7Rw4UIlJCTonnvu6e3TQwCtXr1a69at0+bNm/1aknFWBp+HHnrIs3blVAYPHqy9e/fK6XSqpKREAwYM8LxXXFysb37zmz63i42NldVqVXFxsVd7cXGx4uPjJUl/+9vfdODAAV100UVefWbOnKnU1FS9+eab3SmrU71dd7Oqqiqlp6dLkjZu3KiwsLDulHNaunK+zeLj4332Dw4OVmxsrNxud5f3eaYFou7WFi1apLy8PG3dulVDhw7t0XPvrkDU/Pbbb6ukpERXX321532n06ldu3YpJydHX375pfr06dPzxXRBoP6ubTabRowY4dVn+PDhOnbsWA+effcFqu7FixfrJz/5iW6//XZJ0mWXXaajR4/q+eefPyuCT3fq9ofNZjvvfqZ1xUsvvaSlS5dq06ZNSklJ8Wubs3KqKzY2VsOHD+/wERERoTFjxigkJMRrZOaLL77QwYMHZbfbfe47NDRUY8aMaTeak5+f79nm8ccf1zvvvKMdO3Z4HpL09NNPey2c62m9XbfUuKbnjjvukMvlUm5urvr27RuYYjvh7/m2lpqa6rP/lVdeqZCQkG7t80wLRN3NFixYoFdeeUVbtmzR8OHDe/7kuykQNd90003atWuX13/DV155pW6//Xbt2LFDoaGhAavHX4H6u7766qt16NAhrz6HDh3SkCFDevDsuy9QdZ88ebLdCKbVapXL5erBs+++QP38GTdu3Hn3M81fL774opYuXaqNGzee8n/6fbEuXLjwydM6ci8KCwtTYWGhsrOzddlll6m8vFw/+9nPFBUVpV/+8peej6GPGzdOkjxpMDIyUs8884wGDhyosLAwZWZmateuXXrxxRcVHR2tyMhIxcXFeT2WLVumGTNmeP0fZG8JVN2VlZWaOnWqKioqlJOTI4vFoq+//lpff/21QkNDz/i0SGfnm5GRoddee00333yzJOmSSy7RCy+8oOLiYg0ZMkSvv/66fv3rX2vJkiUaOXKkX/s8GwSi7kceeUR/+tOftG7dOg0ePNjz9yrprAgBPV1zWFhYu/+GN23apISEBN19992yWCy9XHGjQPxdDx48WMuXL1dQUJAGDhyov/3tb1qyZIl+9rOf+f1/xIEWiLoPHjyojRs3atiwYQoJzI9eYwAAAc5JREFUCdGOHTv09NNPa+rUqaf8pOuZ1tW6Jekf//iHHA6Htm3bJrfbreHDh+vEiROe0f4LL7xQS5cuVWhoqGJjY7V+/Xpt2LBBL7zwggYNGtRbpXoJRN0rV67UU089pdWrV+uKK67w/ExzOp2dzlKclVNdXfHMM8/IarVq5syZqqmp0XXXXaeXX37Z65d0QUGB1yLPqVOnqrS0VJmZmXI4HEpOTlZubq4SEhJ6o4RuCUTd+/bt0969eyWp3Q/IrVu3avz48WegshadnW/bofuhQ4cqNzdXv/jFL5STk6OBAwdq+fLlXrcgOBf+7gNRd3Z2tiS1ux3DggULtGjRogBX1LlA1HwuCETdY8eO1YYNG/TUU08pMzNTgwcP1i9+8YuzZpGvFJi6n332Wf3qV7/SvHnz9NVXX8lms2nGjBl69NFHz2htHelq3ZLafSLxzTff1JAhQ/TRRx9Jkux2u3JycrRkyRItXbpUl1xyiXJyck55/5veEIi616xZo/r6es2cOdOr3/Tp0zv96Ps5fR8fAACArjgr1/gAAAAEAsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADDG/wcyWnTOFJwa3QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by rsquare with partial r-square results by each individual features\n",
    "sens_x_bias_alignment_new.plot(lls_x_bias_alignment_new, partial_rsqs_x_bias_alignment_new, type='r.squared', partial_rsqs=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate a Selection Bias Set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_new_2 = df.copy()\n",
    "df_new_2['treated_new'] = df['feature_0'].rank()\n",
    "df_new_2['treated_new'] = [1 if i > df_new_2.shape[0]/2 else 0 for i in df_new_2['treated_new']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature_0</th>\n",
       "      <th>feature_1</th>\n",
       "      <th>feature_2</th>\n",
       "      <th>feature_3</th>\n",
       "      <th>feature_4</th>\n",
       "      <th>feature_5</th>\n",
       "      <th>target</th>\n",
       "      <th>outcome</th>\n",
       "      <th>pihat</th>\n",
       "      <th>treated_new</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9536</td>\n",
       "      <td>0.2911</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.8720</td>\n",
       "      <td>0.5190</td>\n",
       "      <td>0.0822</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0220</td>\n",
       "      <td>0.7657</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.2390</td>\n",
       "      <td>0.3096</td>\n",
       "      <td>0.5115</td>\n",
       "      <td>0.2048</td>\n",
       "      <td>0.8914</td>\n",
       "      <td>0.5015</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0732</td>\n",
       "      <td>0.2304</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.1091</td>\n",
       "      <td>0.0765</td>\n",
       "      <td>0.7428</td>\n",
       "      <td>0.6951</td>\n",
       "      <td>0.4580</td>\n",
       "      <td>0.7800</td>\n",
       "      <td>0</td>\n",
       "      <td>-1.4947</td>\n",
       "      <td>0.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.2055</td>\n",
       "      <td>0.3967</td>\n",
       "      <td>0.6278</td>\n",
       "      <td>0.2086</td>\n",
       "      <td>0.3865</td>\n",
       "      <td>0.8860</td>\n",
       "      <td>0</td>\n",
       "      <td>0.6458</td>\n",
       "      <td>0.2533</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.4501</td>\n",
       "      <td>0.0578</td>\n",
       "      <td>0.3972</td>\n",
       "      <td>0.4100</td>\n",
       "      <td>0.5760</td>\n",
       "      <td>0.4764</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.0018</td>\n",
       "      <td>0.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   feature_0  feature_1  feature_2  feature_3  feature_4  feature_5  target  \\\n",
       "0     0.9536     0.2911     0.0432     0.8720     0.5190     0.0822       1   \n",
       "1     0.2390     0.3096     0.5115     0.2048     0.8914     0.5015       0   \n",
       "2     0.1091     0.0765     0.7428     0.6951     0.4580     0.7800       0   \n",
       "3     0.2055     0.3967     0.6278     0.2086     0.3865     0.8860       0   \n",
       "4     0.4501     0.0578     0.3972     0.4100     0.5760     0.4764       0   \n",
       "\n",
       "   outcome  pihat  treated_new  \n",
       "0   2.0220 0.7657            1  \n",
       "1  -0.0732 0.2304            0  \n",
       "2  -1.4947 0.1000            0  \n",
       "3   0.6458 0.2533            0  \n",
       "4  -0.0018 0.1000            0  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_new_2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sensitivity Analysis Summary Report (with One-sided confounding function and default alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "sens_x_new_2 = Sensitivity(df=df_new_2, inference_features=INFERENCE_FEATURES, p_col='pihat',\n",
    "                     treatment_col='treated_new', outcome_col=OUTCOME_COL, learner=learner_x)\n",
    "# Here for Selection Bias method will use default one-sided confounding function and alpha (quantile range of outcome values) input\n",
    "sens_sumary_x_new_2 = sens_x_new_2.sensitivity_analysis(methods=['Placebo Treatment',\n",
    "                                                     'Random Cause',\n",
    "                                                     'Subset Data',\n",
    "                                                     'Random Replace',\n",
    "                                                     'Selection Bias'], sample_size=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Placebo Treatment</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0081</td>\n",
       "      <td>-0.0052</td>\n",
       "      <td>0.0213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Cause</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0296</td>\n",
       "      <td>0.0568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Subset Data(sample size @0.5)</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0976</td>\n",
       "      <td>0.0784</td>\n",
       "      <td>0.1167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0433</td>\n",
       "      <td>0.0297</td>\n",
       "      <td>0.0568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.80111, with r-sqaure:...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.8369</td>\n",
       "      <td>0.8239</td>\n",
       "      <td>0.8499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.64088, with r-sqaure:...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.6782</td>\n",
       "      <td>0.6651</td>\n",
       "      <td>0.6913</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.48066, with r-sqaure:...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.5194</td>\n",
       "      <td>0.5063</td>\n",
       "      <td>0.5326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.32044, with r-sqaure:...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.3607</td>\n",
       "      <td>0.3474</td>\n",
       "      <td>0.3740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@-0.16022, with r-sqaure:...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.2020</td>\n",
       "      <td>0.1885</td>\n",
       "      <td>0.2154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.0, with r-sqaure:0.0</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0296</td>\n",
       "      <td>0.0568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.16022, with r-sqaure:0...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>-0.1155</td>\n",
       "      <td>-0.1293</td>\n",
       "      <td>-0.1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.32044, with r-sqaure:0...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>-0.2743</td>\n",
       "      <td>-0.2882</td>\n",
       "      <td>-0.2604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.48066, with r-sqaure:0...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>-0.4330</td>\n",
       "      <td>-0.4471</td>\n",
       "      <td>-0.4189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.64088, with r-sqaure:0...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>-0.5918</td>\n",
       "      <td>-0.6060</td>\n",
       "      <td>-0.5775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Selection Bias (alpha@0.80111, with r-sqaure:0...</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>-0.7505</td>\n",
       "      <td>-0.7650</td>\n",
       "      <td>-0.7360</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Method    ATE New ATE  \\\n",
       "0                                  Placebo Treatment 0.0432  0.0081   \n",
       "0                                       Random Cause 0.0432  0.0432   \n",
       "0                      Subset Data(sample size @0.5) 0.0432  0.0976   \n",
       "0                                     Random Replace 0.0432  0.0433   \n",
       "0  Selection Bias (alpha@-0.80111, with r-sqaure:... 0.0432  0.8369   \n",
       "0  Selection Bias (alpha@-0.64088, with r-sqaure:... 0.0432  0.6782   \n",
       "0  Selection Bias (alpha@-0.48066, with r-sqaure:... 0.0432  0.5194   \n",
       "0  Selection Bias (alpha@-0.32044, with r-sqaure:... 0.0432  0.3607   \n",
       "0  Selection Bias (alpha@-0.16022, with r-sqaure:... 0.0432  0.2020   \n",
       "0       Selection Bias (alpha@0.0, with r-sqaure:0.0 0.0432  0.0432   \n",
       "0  Selection Bias (alpha@0.16022, with r-sqaure:0... 0.0432 -0.1155   \n",
       "0  Selection Bias (alpha@0.32044, with r-sqaure:0... 0.0432 -0.2743   \n",
       "0  Selection Bias (alpha@0.48066, with r-sqaure:0... 0.0432 -0.4330   \n",
       "0  Selection Bias (alpha@0.64088, with r-sqaure:0... 0.0432 -0.5918   \n",
       "0  Selection Bias (alpha@0.80111, with r-sqaure:0... 0.0432 -0.7505   \n",
       "\n",
       "  New ATE LB New ATE UB  \n",
       "0    -0.0052     0.0213  \n",
       "0     0.0296     0.0568  \n",
       "0     0.0784     0.1167  \n",
       "0     0.0297     0.0568  \n",
       "0     0.8239     0.8499  \n",
       "0     0.6651     0.6913  \n",
       "0     0.5063     0.5326  \n",
       "0     0.3474     0.3740  \n",
       "0     0.1885     0.2154  \n",
       "0     0.0296     0.0568  \n",
       "0    -0.1293    -0.1018  \n",
       "0    -0.2882    -0.2604  \n",
       "0    -0.4471    -0.4189  \n",
       "0    -0.6060    -0.5775  \n",
       "0    -0.7650    -0.7360  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sens_sumary_x_new_2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Replace"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Method</th>\n",
       "      <th>ATE</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Random Replace</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.4847</td>\n",
       "      <td>0.4713</td>\n",
       "      <td>0.4981</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Method    ATE New ATE New ATE LB New ATE UB\n",
       "0  Random Replace 0.0432  0.4847     0.4713     0.4981"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Replace feature_0 with an irrelevent variable\n",
    "sens_x_replace_new_2 = SensitivityRandomReplace(df=df_new_2, inference_features=INFERENCE_FEATURES, p_col='pihat',\n",
    "                                          treatment_col='treated_new', outcome_col=OUTCOME_COL, learner=learner_x,\n",
    "                                          sample_size=0.9, replaced_feature='feature_0')\n",
    "s_check_replace_new_2 = sens_x_replace_new_2.summary(method='Random Replace')\n",
    "s_check_replace_new_2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Selection Bias: Alignment confounding Function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "sens_x_bias_alignment_new_2 = SensitivitySelectionBias(df_new_2, INFERENCE_FEATURES, p_col='pihat', treatment_col='treated_new',\n",
    "                                                 outcome_col=OUTCOME_COL, learner=learner_x, confound='alignment',\n",
    "                                                 alpha_range=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "lls_x_bias_alignment_new_2, partial_rsqs_x_bias_alignment_new_2 = sens_x_bias_alignment_new_2.causalsens()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>alpha</th>\n",
       "      <th>rsqs</th>\n",
       "      <th>New ATE</th>\n",
       "      <th>New ATE LB</th>\n",
       "      <th>New ATE UB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.8011</td>\n",
       "      <td>0.0604</td>\n",
       "      <td>-0.2260</td>\n",
       "      <td>-0.2399</td>\n",
       "      <td>-0.2120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.6409</td>\n",
       "      <td>0.0415</td>\n",
       "      <td>-0.1721</td>\n",
       "      <td>-0.1860</td>\n",
       "      <td>-0.1583</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.4807</td>\n",
       "      <td>0.0250</td>\n",
       "      <td>-0.1183</td>\n",
       "      <td>-0.1320</td>\n",
       "      <td>-0.1045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.3204</td>\n",
       "      <td>0.0119</td>\n",
       "      <td>-0.0645</td>\n",
       "      <td>-0.0781</td>\n",
       "      <td>-0.0508</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.1602</td>\n",
       "      <td>0.0032</td>\n",
       "      <td>-0.0106</td>\n",
       "      <td>-0.0242</td>\n",
       "      <td>0.0030</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.0432</td>\n",
       "      <td>0.0296</td>\n",
       "      <td>0.0568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.1602</td>\n",
       "      <td>0.0035</td>\n",
       "      <td>0.0971</td>\n",
       "      <td>0.0835</td>\n",
       "      <td>0.1106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.3204</td>\n",
       "      <td>0.0148</td>\n",
       "      <td>0.1509</td>\n",
       "      <td>0.1373</td>\n",
       "      <td>0.1645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.4807</td>\n",
       "      <td>0.0347</td>\n",
       "      <td>0.2047</td>\n",
       "      <td>0.1911</td>\n",
       "      <td>0.2183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.6409</td>\n",
       "      <td>0.0635</td>\n",
       "      <td>0.2586</td>\n",
       "      <td>0.2449</td>\n",
       "      <td>0.2722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.8011</td>\n",
       "      <td>0.1013</td>\n",
       "      <td>0.3124</td>\n",
       "      <td>0.2986</td>\n",
       "      <td>0.3262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    alpha   rsqs  New ATE  New ATE LB  New ATE UB\n",
       "0 -0.8011 0.0604  -0.2260     -0.2399     -0.2120\n",
       "0 -0.6409 0.0415  -0.1721     -0.1860     -0.1583\n",
       "0 -0.4807 0.0250  -0.1183     -0.1320     -0.1045\n",
       "0 -0.3204 0.0119  -0.0645     -0.0781     -0.0508\n",
       "0 -0.1602 0.0032  -0.0106     -0.0242      0.0030\n",
       "0  0.0000 0.0000   0.0432      0.0296      0.0568\n",
       "0  0.1602 0.0035   0.0971      0.0835      0.1106\n",
       "0  0.3204 0.0148   0.1509      0.1373      0.1645\n",
       "0  0.4807 0.0347   0.2047      0.1911      0.2183\n",
       "0  0.6409 0.0635   0.2586      0.2449      0.2722\n",
       "0  0.8011 0.1013   0.3124      0.2986      0.3262"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lls_x_bias_alignment_new_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>feature</th>\n",
       "      <th>partial_rsqs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>feature_0</td>\n",
       "      <td>-0.4041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>feature_1</td>\n",
       "      <td>0.0101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>feature_2</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>feature_3</td>\n",
       "      <td>0.0016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>feature_4</td>\n",
       "      <td>0.0011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>feature_5</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     feature partial_rsqs\n",
       "0  feature_0      -0.4041\n",
       "1  feature_1       0.0101\n",
       "2  feature_2       0.0000\n",
       "3  feature_3       0.0016\n",
       "4  feature_4       0.0011\n",
       "5  feature_5       0.0000"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "partial_rsqs_x_bias_alignment_new_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by confounding vector and plot Confidence Intervals for ATE\n",
    "sens_x_bias_alignment_new_2.plot(lls_x_bias_alignment_new_2, ci=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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z36mjRs3Smq42XfOnDkqLS1VWFiYEhIStGnTJiUlJZ33gQIAgI4hoKKiwt3eizCNCTczmYz++hf99T967F/0179M6C/fbQQAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjBFRUVLjbexEAAAC+4swLAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF58UFNTowULFujKK69Unz59dO+99+rbb7/1efvMzEyFh4drwYIFflyluVrS3xUrVmjEiBHq37+/+vfvr1tuuUXvvvtuG63YLC3pb2Zmpm6++Wb1799fMTExmjJlir744os2WrFZWtLfDz/8UPfee6/i4+MVHh6utWvXttFqzbBy5UolJCTIarVqzJgx2rp16znrP/jgA40ZM0ZWq1XXXXedcnNz22ilZjqf/paUlOjBBx/U8OHD1bNnT82aNasNV9o0wosPFi9erPXr12vVqlXatGmTTpw4oSlTpsjlcjW77Y4dO7R69Wpdc801bbBSM7Wkv3369NFvf/tb/d///Z8KCgo0evRoTZ8+XXv27GnDlZuhJf394IMP9O///u9699139fbbbysoKEh33nmnjh492oYrN0NL+nvy5EkNHjxYy5cvV+fOndtwtRe//Px8LVq0SPPmzVNhYaGSk5OVmpqqw4cPN1p/8OBB/fKXv1RycrIKCwv161//Wo8++qjWrVvXxis3w/n2t6amRj179tTcuXM1bNiwNl5t0/icl2YcO3ZMV111lbKysvTLX/5SknTkyBFde+21euONNzR27NhzbjtmzBi9+OKLevrppzV48GBlZGS01dKN0Jr+/tTAgQP1xBNPaObMmf5arnEuVH8rKysVHR2ttWvXavz48f5cslEuRH/79u2rZ555RtOnT/f3co0wduxYXXPNNXrxxRc9Y0OHDtWkSZP0xBNPnFX/xBNPaP369frkk088Y//5n/+pffv26a9//WubrNkk59vfM02ZMkU9e/ZUdna2v5fZLM68NGPXrl2qra1VSkqKZ6xfv36Ki4vT9u3bz7nt3LlzNWnSJI0ePdrfyzRWa/p7msvl0ptvvqmTJ08qOTnZX0s10oXor9QQXurr6xUeHu6PZRrrQvUXDZxOp3bt2uXVT0lKSUlpsp8fffTRWfVjx47Vp59+qtraWr+t1UQt6e/FKqi9F3CxKy0tlcViUUREhNd4ZGSkSktLm9xuzZo1OnDggF599VV/L9FoLe2vJO3du1e33nqrqqur1bVrV/3xj3/k8txPtKa/Z1q0aJGuvfZawuFPXKj+ooHD4ZDL5VJkZKTX+Ln6WVpaqptuuums+rq6OjkcDvXu3dtfyzVOS/p7sbpkw8uTTz6pZ5999pw169evb9G+i4uL9d///d/avHmzgoODW7QP0/mzv6fFxsZqy5YtOn78uNatW6dZs2Zpw4YNGjx4cKv2a4K26O9pv/nNb1RUVKTNmzfLYrFckH1e7NqyvwDO3yUbXmbNmuW5Rt2Ufv36aceOHXK5XHI4HOrVq5fnvbKyMt14442NbvfRRx/J4XDohhtu8Iy5XC5t3bpVubm5+u6779SpU6cLcyAXKX/297SQkBBdeeWVkqTExER98sknevnll/XSSy+1/gAucm3RX6nhZtT8/HytX79eAwcObO2yjdFW/YW3iIgIWSwWlZWVeY2XlZUpKiqq0W2ioqIarQ8KCjrrjNilriX9vVhdsuElIiLCpz/YiYmJCg4OVkFBgVJTUyVJ3377rfbv3y+bzdboNhMmTND111/vNTZ79mzFxMTo17/+tUJCQlp/ABc5f/a3KfX19XI6nS1ar2naor8LFy7UX/7yF61fv16DBg26IOs2RXv8+UXD/5AkJiaqoKBAd955p2e8oKBAEydObHSb5ORkbdiwwWusoKBA119//SV75rspLenvxcqyaNGipe29iItZaGioSkpKtHLlSl1zzTU6duyY/uu//kthYWH67W9/q8DAhnuehw8fLklKSkpSaGioIiMjvV6vv/66oqOjNX36dAUEBLTnIV1UWtJfSVq6dKlCQkJUX1+vb7/9VtnZ2crLy9PSpUsVExPTbsdzsWlpf+fPn68///nPWr16tfr166eTJ0/q5MmTknRJhG9ftbS/lZWV2rdvn+x2u/7whz9o8ODBCgsLk9PpVPfu3dvteC4G3bp107Jly9S7d2+FhoYqIyNDW7du1UsvvaTu3bsrPT1dGzZs0B133CFJuuKKK/TCCy+orKxM/fv316ZNm/Tcc8/pySef1NVXX93OR3PxOd/+StLnn38uu92ujRs3yu12a9CgQTp69KjX2ca2dsmeeTkfy5Ytk8Vi0cyZM1VdXa3Ro0frlVde8br+X1xcLIfD0Y6rNFdL+mu325WWlqbS0lKFhYXpmmuuOe9Hqy8VLenvypUrJUmTJk3y2tfChQu1ePHitlm4IVrS308//dTrH4dly5Zp2bJlmjp16kXxGGp7mjx5ssrLy5WRkSG73a74+Hjl5eUpOjpaUsOj6GcaOHCg8vLy9Jvf/Ea5ubnq3bu3nn766bP+7KLB+fZX0llPzG7evFn9+/fX7t2722TNjeFzXgAAgFH4nBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYJT/H0sIU7/jm+jOAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the results by rsquare with partial r-square results by each individual features\n",
    "sens_x_bias_alignment_new_2.plot(lls_x_bias_alignment_new, partial_rsqs_x_bias_alignment_new_2, type='r.squared', partial_rsqs=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
